package com.mercury.ec.module.air.controller.admin.order.vo.order;

import com.mercury.ec.framework.common.enums.DeliveryTypeEnum;
import com.mercury.ec.framework.common.validation.InEnum;
import com.mercury.ec.module.air.controller.admin.order.validator.AirOrderUpdateSequenceProvider;
import com.mercury.ec.module.air.validator.AirGroup;
import com.mercury.ec.module.air.controller.admin.order.vo.orderpassenger.AirOrderPassengerUpdateReqVO;
import com.mercury.ec.module.air.controller.admin.order.vo.orderprice.AirOrderPriceUpdateReqVO;
import com.mercury.ec.module.air.controller.admin.order.vo.orderroute.AirOrderRouteUpdateReqVO;
import com.mercury.ec.module.air.enums.*;
import com.mercury.ec.module.basic.enums.BasicBizScopeTypeEnum;
import io.swagger.v3.oas.annotations.media.Schema;
import lombok.Data;
import org.hibernate.validator.constraints.Length;
import org.hibernate.validator.group.GroupSequenceProvider;

import javax.validation.Valid;
import javax.validation.constraints.NotEmpty;
import javax.validation.constraints.NotNull;
import java.math.BigDecimal;
import java.time.LocalDateTime;
import java.util.List;

@Data
@GroupSequenceProvider(value = AirOrderUpdateSequenceProvider.class)
@Schema(description = "管理后台 - 机票订单修改 Request VO")
public class AirOrderUpdateReqVO {

    @Schema(description = "id", requiredMode = Schema.RequiredMode.REQUIRED, example = "11414")
    @NotNull(message = "id不能为空")
    private Long id;

    @Schema(description = "订单号", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "订单号不能为空")
    private String no;

    @Schema(description = "订单来源 字典（air_order_source_type 1-手工订单/2-白屏/3-ETERM/4-需求单）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "订单来源不能为空")
    @InEnum(value = AirOrderSourceTypeEnum.class, message = "订单来源必需是【1-手工订单/2-白屏/3-ETERM/4-需求单/5-分销】")
    private Integer sourceType;

    @Schema(description = "来源单号")
    private String sourceNo;

//    @Schema(description = "原订单id")
//    private Long originOrderId;
//
//    @Schema(description = "原订单号")
//    private String originOrderNo;

//    @Schema(description = "系统客户端 字典（system_client_type 1-中台/2-分销/3-差旅）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//    @NotNull(message = "客户端不能为空")
//    private Integer clientType;

    @Schema(description = "订单类型 字典（air_order_type 1-销售单/2-改签单/3-退票单/4-调账单）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "订单类型不能为空")
    private Integer type;

//    @Schema(description = "改签状态 字典（air_order_change_status 0-未改签，1-部分改签，2-已改签）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
//    @NotNull(message = "改签状态不能为空")
//    private Integer changeStatus;
//
//    @Schema(description = "退票状态 字典（air_order_return_status 0-未退票，1-部分退票，2-已退票）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//    @NotNull(message = "退票状态 字典（air_order_return_status 0-未退票，1-部分退票，2-已退票）不能为空")
//    private Integer returnStatus;
//
//    @Schema(description = "调账状态 字典（air_order_adjust_status 0-未调账，1-部分调账，2-已调账）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//    @NotNull(message = "调账状态 字典（air_order_adjust_status 0-未调账，1-部分调账，2-已调账）不能为空")
//    private Integer adjustStatus;

//    @Schema(description = "归属部门id 见表（system_dept.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "560")
//    @NotNull(message = "归属部门id 见表（system_dept.id）不能为空")
//    private Long deptId;

    @Schema(description = "团号")
    private String groupNo;

    @Schema(description = "业务类型 字典（basic_biz_scope_type 1-国内/2-国际）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @InEnum(value = BasicBizScopeTypeEnum.class, message = "机票类型必需是【1-国内/2-国际】")
    @NotNull(message = "机票类型不能为空")
    private Integer scopeType;

    @Schema(description = "行程类型 字典（air_order_route_type 1-单程/2-往返/3-联程）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @InEnum(value = AirOrderRouteTypeEnum.class, message = "行程类型必需是【1-单程/2-往返/3-联程】")
    @NotNull(message = "行程类型不能为空")
    private Integer routeType;

//    @Schema(description = "票证类型 字典（basic_vendor_ticket_type 1-BSP/2-B2B/3-B2C/4-GP/5-外购/6-BOP）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//    @NotNull(message = "票证类型不能为空")
//    private Integer ticketType;

    @Schema(description = "订座编码")
    @Length(max = 16, message = "订座编码长度不能超过16")
    private String pnr;

    @Schema(description = "编码状态 HK-预订/XX-取消/RR-出票")
    @Length(max = 8, message = "编码状态长度不能超过8")
    private String pnrStatus;

    @Schema(description = "PNR内容")
    private String pnrContent;

    @Schema(description = "航司大编码")
    @Length(max = 16, message = "航司大编码长度不能超过16")
    private String bigPnr;

//    @Schema(description = "乘客人数", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "乘客人数不能为空")
//    private Integer passengerNum;

//    @Schema(description = "订单状态 字典（air_sale_order_status 0-已取消/10-新订单/20-待审核/25-已拒绝/30-待支付/40-待出票/45-出票中/50-已出票/55-出票失败 air_change_order_status 0-已取消/10-新订单/20-待审核/25-已拒绝/30-待支付/40-待出票/45-出票中/50-已出票/55-出票失败 air_return_order_status 0-已取消/10-新订单/20-待审核/25-已拒绝/30-待退款/40-待退票/45-退票中/50-已退票/55-退票失败 air_adjust_order_status 0-已取消/10-新订单/20-待审核/25-已拒绝/30-待支付/40-待出票/45-出票中/50-已出票/55-出票失败）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
//    @NotNull(message = "订单状态不能为空")
//    private Integer status;

    @Schema(description = "客户id 见表（basic_customer.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "16640")
    @NotNull(message = "客户不能为空")
    private Long customerId;

    @Schema(description = "客户协议类型 字典（air_customer_agreement_type 1-普通/2-GP/3-三方协议）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "客户协议类型不能为空")
    private Integer customerAgreementType;

    @Schema(description = "客户协议号", requiredMode = Schema.RequiredMode.REQUIRED, example = "123456")
    @NotNull(message = "客户协议号不能为空（三方协议必填）", groups = {AirGroup.CustomerAgreement.class})
    @Length(max = 64, message = "客户协议号长度不能超过64")
    private String customerAgreementNo;

    @Schema(description = "业务员id 见表（system_users.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "14732")
    @NotNull(message = "业务员id不能为空")
    private Long salesmanUserId;

//    @Schema(description = "业务员部门id 见表（system_dept.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "22943")
//    @NotNull(message = "业务员部门id 见表（system_dept.id）不能为空")
//    private Long salesmanDeptId;
//
//    @Schema(description = "预订部门id 见表（system_dept.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "26302")
//    @NotNull(message = "预订部门id 见表（system_dept.id）不能为空")
//    private Long bookDeptId;
//
//    @Schema(description = "预订时间", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "预订时间不能为空")
//    private LocalDateTime bookTime;

    @Schema(description = "预订office")
    @Length(max = 16, message = "预订office长度不能超过16")
    private String bookOffice;

    @Schema(description = "预订员id 见表（system_users.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "14732")
    @NotNull(message = "预订员id不能为空")
    private Long bookUserId;

    @Schema(description = "预订时间", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "预订时间不能为空")
    private LocalDateTime bookTime;

    @Schema(description = "是否需要发票（销售、改签单必填）", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "是否需要发票不能为空", groups = {AirGroup.Sale.class, AirGroup.Change.class})
    private Boolean needInvoice;

    @Schema(description = "开票方式（需发发票必填） 字典（basic_make_invoice_type 1-统一发票/2-单项发票）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "开票方式不能为空", groups = {AirGroup.NeedInvoice.class})
    private Integer makeInvoiceType;

    @Schema(description = "是否回收发票（退票单必填）", requiredMode = Schema.RequiredMode.REQUIRED, example = "true")
    @NotNull(message = "是否回收发票不能为空", groups = {AirGroup.Return.class})
    private Boolean recycleInvoice;

    @Schema(description = "发票类型（销售、改签单必填） 字典（basic_air_invoice_type）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
    @NotNull(message = "发票类型不能为空", groups = {AirGroup.Sale.class, AirGroup.Change.class})
    private Integer invoiceType;

    @Schema(description = "配送方式 字典（system_delivery_type）", example = "1")
    @InEnum(value = DeliveryTypeEnum.class, message = "配送方式必需是【1--送票上门/2-邮寄发票/3-自取/4-邮箱】")
    private Integer deliveryType;

    @Schema(description = "配送备注", example = "你猜")
    @Length(max = 255, message = "配送备注长度不能超过255")
    private String deliveryRemark;

    @Schema(description = "配送费", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotNull(message = "配送费不能为空")
    private BigDecimal deliveryFee;

    @Schema(description = "配送联系人")
    @Length(max = 64, message = "配送联系人长度不能超过64")
    private String deliveryContact;

    @Schema(description = "配送联系人电话")
    @Length(max = 16, message = "配送联系人电话长度不能超过16")
    private String deliveryContactPhone;

    @Schema(description = "配送城市id")
    private Long deliveryCityId;

    @Schema(description = "配送地址")
    @Length(max = 255, message = "配送地址长度不能超过255")
    private String deliveryAddress;

    @Schema(description = "配送邮箱")
    @Length(max = 128, message = "配送邮箱长度不能超过128")
    private String deliveryEmail;

    @Schema(description = "配送员id 见表（system_users.id）", example = "14732")
    private Long deliveryUserId;

    @Schema(description = "配送时间")
    private LocalDateTime deliveryTime;

//    @Schema(description = "调度员id 见表（system_users.id）", example = "17733")
//    private Long dispatchUserId;
//
//    @Schema(description = "调往部门id 见表（system_dept.id）", example = "19713")
//    private Long dispatchDeptId;
//
//    @Schema(description = "调度时间")
//    private LocalDateTime dispatchTime;
//
//    @Schema(description = "是否锁单")
//    private Boolean locked;
//
//    @Schema(description = "锁单员id 见表（system_users.id）", example = "24966")
//    private Long lockUserId;
//
//    @Schema(description = "锁单部门id 见表（system_dept.id）", example = "1733")
//    private Long lockDeptId;
//
//    @Schema(description = "锁单时间")
//    private LocalDateTime lockTime;

//    @Schema(description = "出（退）票时间", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "出（退）票时间不能为空")
//    private LocalDateTime issueTime;
//
//    @Schema(description = "出（退）票员id 见表（system_users.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "20888")
//    @NotNull(message = "出（退）票员id 见表（system_users.id）不能为空")
//    private Long issueUserId;
//
//    @Schema(description = "出（退）票部门id 见表（system_dept.id）", requiredMode = Schema.RequiredMode.REQUIRED, example = "12864")
//    @NotNull(message = "出（退）票部门id 见表（system_dept.id）不能为空")
//    private Long issueDeptId;
//
//    @Schema(description = "出票office")
//    private String issueOffice;

//    @Schema(description = "取消规则id 见表（train_cancel_rule.id）", example = "13766")
//    private Long cancelRuleId;
//
//    @Schema(description = "取消操作员id 见表（system_users.id）", example = "14219")
//    private Long cancelUserId;
//
//    @Schema(description = "取消部门id 见表（system_dept.id）", example = "11064")
//    private Long cancelDeptId;
//
//    @Schema(description = "取消时间")
//    private LocalDateTime cancelTime;
//
//    @Schema(description = "取消原因")
//    private String cancelCause;

    //    @Schema(description = "最后改签员id 见表（system_users.id）", example = "10994")
//    private Long finallyChangeUserId;
//
//    @Schema(description = "最后改签部门id 见表（system_dept.id）", example = "32538")
//    private Long finallyChangeDeptId;
//
//    @Schema(description = "最后改签时间")
//    private LocalDateTime finallyChangeTime;
//
    @Schema(description = "最后退票订单类型（退票单必填） 字典（air_order_return_order_type 1-退票/2-废票）", example = "1")
    @InEnum(value = AirOrderReturnOrderTypeEnum.class, message = "最后退票订单类型必需是【1-退票/2-废票】")
    @NotNull(message = "最后退票类型不能为空", groups = {AirGroup.Return.class})
    private Integer finallyReturnOrderType;

    @Schema(description = "最后退票类型（退票单必填） 字典（air_order_return_type 1-自愿/2-非自愿）", example = "1")
    @InEnum(value = AirOrderReturnTypeEnum.class, message = "最后退票类型必需是【1-自愿/2-非自愿】")
    @NotNull(message = "最后退票类型不能为空", groups = {AirGroup.Return.class})
    private Integer finallyReturnType;

    @Schema(description = "最后退票原因（退票非自愿必填） 字典（air_order_return_cause）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
    @NotNull(message = "最后退票原因不能为空", groups = {AirGroup.Return.class, AirGroup.UnWillReturn.class})
    private Integer finallyReturnCause;

//    @Schema(description = "最后退票员id 见表（system_users.id）", example = "12414")
//    private Long finallyReturnUserId;
//
//    @Schema(description = "最后退票部门id 见表（system_dept.id）", example = "12459")
//    private Long finallyReturnDeptId;
//
//    @Schema(description = "最后退票时间")
//    private LocalDateTime finallyReturnTime;

    @Schema(description = "最后调账类型（调账单必填） 字典（air_order_adjust_type 1-/2-/3-）", example = "2")
    @InEnum(value = AirOrderAdjustTypeEnum.class, message = "最后调账类型必需是【1-/2-/3-】")
    @NotNull(message = "最后调账类型不能为空", groups = {AirGroup.Adjust.class})
    private Integer finallyAdjustType;

//    @Schema(description = "最后调账员id 见表（system_users.id）", example = "16600")
//    private Long finallyAdjustUserId;
//
//    @Schema(description = "最后调账部门id 见表（system_dept.id）", example = "1237")
//    private Long finallyAdjustDeptId;
//
//    @Schema(description = "最后调账时间")
//    private LocalDateTime finallyAdjustTime;

//    @Schema(description = "附加费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "附加费不能为空")
//    private BigDecimal saleAdditionalFee;
//
//    @Schema(description = "服务费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "服务费不能为空")
//    private BigDecimal saleServiceFee;
//
//    @Schema(description = "升舱费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "升舱费不能为空")
//    private BigDecimal saleUpgradeFee;
//
//    @Schema(description = "改期费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "改期费不能为空")
//    private BigDecimal saleChangeFee;
//
//    @Schema(description = "退票费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "退票费不能为空")
//    private BigDecimal saleReturnFee;
//
//    @Schema(description = "票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "28583")
//    @NotNull(message = "票面价不能为空")
//    private BigDecimal saleTicketPrice;
//
//    @Schema(description = "销售价", requiredMode = Schema.RequiredMode.REQUIRED, example = "19901")
//    @NotNull(message = "销售价不能为空")
//    private BigDecimal salePrice;
//
//    @Schema(description = "已用票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "20778")
//    @NotNull(message = "已用票面价不能为空")
//    private BigDecimal saleUsedPrice;
//
//    @Schema(description = "机建税", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "机建税不能为空")
//    private BigDecimal saleAirportTax;
//
//    @Schema(description = "燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "燃油税不能为空")
//    private BigDecimal saleOilTax;
//
//    @Schema(description = "销售税", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "销售税不能为空")
//    private BigDecimal saleTax;
//
//    @Schema(description = "代理费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "代理费不能为空")
//    private BigDecimal saleAgencyFee;
//
//    @Schema(description = "后返费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "后返费不能为空")
//    private BigDecimal saleBackRebateFee;
//
//    @Schema(description = "记奖价", requiredMode = Schema.RequiredMode.REQUIRED, example = "28246")
//    @NotNull(message = "记奖价不能为空")
//    private BigDecimal salePrizePrice;
//
//    @Schema(description = "记奖税", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "记奖税不能为空")
//    private BigDecimal salePrizeTax;
//
//    @Schema(description = "销售金额", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "销售金额不能为空")
//    private BigDecimal saleAmount;
//
//    @Schema(description = "应收", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "应收不能为空")
//    private BigDecimal saleReceivable;
//
//    @Schema(description = "实收", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "实收不能为空")
//    private BigDecimal saleReceipts;

//    @Schema(description = "支付状态 字典（system_pay_status）", requiredMode = Schema.RequiredMode.REQUIRED, example = "2")
//    @NotNull(message = "支付状态 字典（system_pay_status）不能为空")
//    private Integer salePayStatus;

//    @Schema(description = "支付方式id 见表（basic_pay_type.id）", example = "15844")
//    @NotNull(message = "支付方式不能为空")
//    private Long salePayTypeId;

    @Schema(description = "支付科目id 见表（basic_pay_subject.id）", example = "27542")
    @NotNull(message = "支付科目不能为空")
    private Long salePaySubjectId;

    @Schema(description = "支付账号", example = "20047")
    @Length(max = 64, message = "支付账号长度不能超过64")
    private String salePayAccount;

    @Schema(description = "支付单号")
    @Length(max = 64, message = "支付单号长度不能超过64")
    private String salePayOrderNo;

    @Schema(description = "支付时间")
    private LocalDateTime salePayTime;

    @Schema(description = "是否在线支付")
    private Boolean salePayOnline;

//    @Schema(description = "对账日期", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "对账日期不能为空")
//    private LocalDate saleReconcileDate;
//
//    @Schema(description = "结算日期", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "结算日期不能为空")
//    private LocalDate saleSettleDate;

    @Schema(description = "采购商id 见表（basic_vendor.id）", example = "28311")
    private Long purchaseId;

    @Schema(description = "采购单号")
    @Length(max = 64, message = "采购单号长度不能超过64")
    private String purchaseOrderNo;

//    @Schema(description = "采购附加费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购附加费不能为空")
//    private BigDecimal purchaseAdditionalFee;
//
//    @Schema(description = "采购服务费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购服务费不能为空")
//    private BigDecimal purchaseServiceFee;
//
//    @Schema(description = "采购升舱费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购升舱费不能为空")
//    private BigDecimal purchaseUpgradeFee;
//
//    @Schema(description = "采购改期费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购改期费不能为空")
//    private BigDecimal purchaseChangeFee;
//
//    @Schema(description = "采购退票费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购退票费不能为空")
//    private BigDecimal purchaseReturnFee;
//
//    @Schema(description = "采购票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "3654")
//    @NotNull(message = "采购票面价不能为空")
//    private BigDecimal purchaseTicketPrice;
//
//    @Schema(description = "采购价", requiredMode = Schema.RequiredMode.REQUIRED, example = "28309")
//    @NotNull(message = "采购价不能为空")
//    private BigDecimal purchasePrice;
//
//    @Schema(description = "已用采购票面价", requiredMode = Schema.RequiredMode.REQUIRED, example = "10111")
//    @NotNull(message = "已用采购票面价不能为空")
//    private BigDecimal purchaseUsedPrice;
//
//    @Schema(description = "采购机建税", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购机建税不能为空")
//    private BigDecimal purchaseAirportTax;
//
//    @Schema(description = "采购燃油税", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购燃油税不能为空")
//    private BigDecimal purchaseOilTax;
//
//    @Schema(description = "采购税", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购税不能为空")
//    private BigDecimal purchaseTax;
//
//    @Schema(description = "采购代理费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购代理费不能为空")
//    private BigDecimal purchaseAgencyFee;
//
//    @Schema(description = "采购后返费", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购后返费不能为空")
//    private BigDecimal purchaseBackRebateFee;
//
//    @Schema(description = "采购记奖价", requiredMode = Schema.RequiredMode.REQUIRED, example = "28939")
//    @NotNull(message = "采购记奖价不能为空")
//    private BigDecimal purchasePrizePrice;
//
//    @Schema(description = "采购记奖税", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购记奖税不能为空")
//    private BigDecimal purchasePrizeTax;
//
//    @Schema(description = "采购金额", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购金额不能为空")
//    private BigDecimal purchaseAmount;
//
//    @Schema(description = "采购应付", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购应付不能为空")
//    private BigDecimal purchasePayable;
//
//    @Schema(description = "采购实付", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购实付不能为空")
//    private BigDecimal purchasePayment;
//
//    @Schema(description = "采购支付状态 字典（system_pay_status）", requiredMode = Schema.RequiredMode.REQUIRED, example = "1")
//    @NotNull(message = "采购支付状态 字典（system_pay_status）不能为空")
//    private Integer purchasePayStatus;

    @Schema(description = "采购支付科目id 见表（basic_pay_subject.id）", example = "22116")
    private Long purchasePaySubjectId;

//    @Schema(description = "采购支付方式id 见表（basic_pay_type.id）", example = "8940")
//    private Long purchasePayTypeId;

    @Schema(description = "采购支付账号", example = "4194")
    @Length(max = 64, message = "采购支付账号长度不能超过64")
    private String purchasePayAccount;

    @Schema(description = "采购支付单号")
    @Length(max = 64, message = "采购支付单号长度不能超过64")
    private String purchasePayOrderNo;

    @Schema(description = "采购支付时间")
    private LocalDateTime purchasePayTime;

    @Schema(description = "采购是否在线支付")
    private Boolean purchasePayOnline;

//    @Schema(description = "采购对账日期", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购对账日期不能为空")
//    private LocalDate purchaseReconcileDate;
//
//    @Schema(description = "采购结算日期", requiredMode = Schema.RequiredMode.REQUIRED)
//    @NotNull(message = "采购结算日期不能为空")
//    private LocalDate purchaseSettleDate;

    @Schema(description = "联系人")
    @Length(max = 64, message = "联系人长度不能超过64")
    private String contact;

    @Schema(description = "联系人证件类型 字典（system_card_type）", example = "1")
    private Integer contactCardType;

    @Schema(description = "联系人证件号")
    @Length(max = 32, message = "联系人证件号长度不能超过32")
    private String contactCardNo;

    @Schema(description = "联系人电话")
    @Length(max = 16, message = "联系人电话长度不能超过16")
    private String contactPhone;

    @Schema(description = "联系人手机")
    @Length(max = 16, message = "联系人手机长度不能超过16")
    private String contactMobile;

    @Schema(description = "联系人邮箱")
    @Length(max = 128, message = "联系人邮箱长度不能超过128")
    private String contactEmail;

    @Schema(description = "备注", example = "你说的对")
    @Length(max = 255, message = "备注长度不能超过255")
    private String remark;

    @Valid
    @Schema(description = "行程信息", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "行程信息不能为空")
    private List<AirOrderRouteUpdateReqVO> routes;

    @Valid
    @Schema(description = "乘客信息", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "乘客信息不能为空")
    private List<AirOrderPassengerUpdateReqVO> passengers;

    @Valid
    @Schema(description = "价格信息", requiredMode = Schema.RequiredMode.REQUIRED)
    @NotEmpty(message = "价格信息不能为空")
    private List<AirOrderPriceUpdateReqVO> prices;
}
